/*
 * Copyright 2009-2019 the original author or authors  
 *
 */
package com.livery.liu.dao;

import java.io.Serializable;
import java.util.List;

/**
 *
 * <p></p>
 * <pre class="code">
 *  
 * </pre>
 *
 * @author  <a href="mailto:livery.liu@gmail.com"> livery liu</a>
 */

public interface EntityDao<T> extends IBaseDao<T>{

	/**
	 * 删除对象(按某个属性)
	 * @param id
	 */
	public int deleteByProperty(T po);
	
	/**
	 * 删除对象(更新某个字段，不真实删除)
	 * @param id
	 */
	public int deleteByUpdate(Serializable id);

	/**
	 * 获取Entity对象的主键名.
	 */
	public String getIdName(Class<T> clazz);
	
	/**
	 * 得到当前对象ID(一般不用自我实现)
	 * @return
	 */
	public Serializable getCurrentId();
	
	/**
	 * 以po的属性为条件得到id的List
	 * 主要为了配合memcache的two fetch策略
	 * @return
	 */
	public List<Serializable> getIdList(T po);
	
}